/*
 * 文件名：StreamDataSenderHandler.java
 * 版权：亚信联创版权所有
 * 描述：TODO
 * 修改人：yuanze
 * 修改时间：2014年11月13日
 * 修改内容：TODO
 */
package com.ailk.bigdata.etl.realstream.server.netty.handler;

import io.netty.channel.ChannelHandler.Sharable;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.ailk.bigdata.etl.common.server.net.NettyUtil;

/**
 * @description TODO
 * @author [yuanze]
 * @version [版本号,2014年11月13日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
@Sharable
public class StreamDataInitiativeSenderHandler extends SimpleChannelInboundHandler<String>
{
	private static Logger logger = LoggerFactory.getLogger(StreamDataInitiativeSenderHandler.class);

	@Override
	protected void channelRead0(ChannelHandlerContext ctx, String msg) throws Exception
	{
		logger.info(msg.length() < 512 ? msg : StringUtils.substring(msg, 0, 512));
	}

	@Override
	public void channelReadComplete(ChannelHandlerContext ctx) throws Exception
	{
		ctx.flush();
	}

	@Override
	public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception
	{
		logger.error("Unexpected exception from downstream.", cause);
		String key = NettyUtil.getClientAdd(ctx);
		logger.info("server [" + key + "]异常，停止消息发送服务...................");
		ctx.close();
	}
}
